Postavljanje jednacina
clear variables
syms Di1 L1 L2 L U L12 R R1 R2 i1 u1 u2 uR1 ug T t
jednacine = [ug == uR1 + u1, u1 == L1 * Di1, u2 == L12 * Di1, uR1 == R1 * i1]
jednacine = 
Jednacine stanja
jednacineIzvoda = eliminate(jednacine, [u1, u2, uR1])
jednacineIzvoda = 
assume([L1, L2, L12, U, R1, t], 'real')
assumeAlso(0 < R1 & 0 < L1 & 0 < L2 & 0 < L12 & 0 < L & 0 < U)
jednacineStanja = solve(jednacineIzvoda, Di1)
jednacineStanja = 
Resavanje diferencijalne jednacine
syms i1(t) g(t)
promenljiveStanja = i1 == i1(t)
promenljiveStanja(t) = 
zamene = [R1 == R, R2 == 2*R, L1 == L, L2 == 4*L, L12 == (1/2)*sqrt(L*4*L)]
zamene = 
pobuda = ug == heaviside(t)
pobuda = 
jednacineStanjaFun = subs(diff(i1(t)) == jednacineStanja,...
lhs([promenljiveStanja pobuda zamene]),...
rhs([promenljiveStanja pobuda zamene]))
jednacineStanjaFun = 
resenjeDiff = dsolve(jednacineStanjaFun, i1(0) == 0, 'IgnoreAnalyticConstraints', false)
resenjeDiff = 
Grinova funkcija
g_i1(t) = simplify(diff(resenjeDiff))
g_i1(t) = 
Konvolucioni integral
syms tau t
zameneLRT = [T == L/R, L12 == L]
zameneLRT = 
assume((0 < t)& (t< T))
i1_1(t) = simplify(int( (U*tau/T)*g_i1(t-tau), tau, 0, t))
i1_1(t) = 
assume((T > 0) & (T < t))
i1_2(t) = simplify( int((U*tau/T)*g_i1(t-tau), tau, 0, T))
i1_2(t) = 
u2_1(t) = simplify(subs(L12*diff(i1_1(t)), lhs(zameneLRT), rhs(zameneLRT)))
u2_1(t) = 
u2_2(t) = simplify(subs(L12*diff(i1_2(t)), lhs(zameneLRT), rhs(zameneLRT)) )
u2_2(t) = 
assume(t,'clear')
u2(t) = (piecewise((t<0), 0, (0<=t)&(t<T), u2_1(t), (t>=T), u2_2(t) ))
u2(t) = 
Crtanje grafika
vrednosti = [R == 1000, L == 1e-3, T == 1e-6, U == 10]
vrednosti = 
fplot(t, subs(u2(t), lhs(vrednosti), rhs(vrednosti)), [0 5e-6] )
grid on
xlabel('t')
ylabel('u2(t)')